x

Класс Object

Если класс ни от чего не наследуется, то он по умолчанию отнаследован от класса Object

public class Empty {}

// на самом деле
public class Empty extends Object {
    public Empty() {
        super();
    }
}

Методы Object

  1. public String toString() - строковое представление объекта.

    • Реализация по умолчанию: ИмяКласса@хэшкод
    • Переопределять для красивого вывода
    • Record автоматически переопределяет
  2. public boolean equals(Object obj) - эквивалентность двух обхектов

    • == - сравнивает ссылки
    • По умолчанию equals тоже сравнивает ссылки, так что лучше переопределить
    • Правила, которые нельзя нарушать:

      1. Рефлексивность
      2. Симметричность
      3. Транзитивность
      4. Согласованность (при очередном вызове результат не должен поменяться)
      5. Сравнение с null: x.equals(null) == null // ВСЕГДА false
      6. public int hashCode() - числовое значение для эффективной работы хэш-таблиц
    • Реализация по умолчанию: вычисление на основе адреса

    • Используется в HashMap
    • Между equals и hashCode должен соблюдаться определенный контракт
  3. public final native Class<?> getClass() - возвращает метаданные объекта во время выполнения

  4. protected native Object clone() thows CloneNotSupportedException - создает и возвращает копию объекта

    • По умолчанию: shallow копия
    • Условие использования: реализация Cloneable
    • Не очень удачный метод в общем и целом
  5. public final void wait(), public final native void notify(), public final native void notifyAll() - для работы с многопоточностью (подробнее здесь)

  6. protected void finalize() throws Thowable - метод вызывался GC перед удалением объекта, сейчас @Deprecated
Left-click: follow link, Right-click: select node, Scroll: zoom
x